home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 7: Sunsite / Linux Cubed Series 7 - Sunsite Vol 1.iso / system / emulator / bsvc-1.000 / bsvc-1 / bsvc-1.0.4 / src / Framework / BasicDevice.hxx < prev    next >
Text File  |  1995-07-26  |  3KB  |  101 lines

  1. ///////////////////////////////////////////////////////////////////////////////
  2. // $Id: BasicDevice.hxx,v 1.1 1994/02/18 19:48:13 bmott Exp $
  3. ///////////////////////////////////////////////////////////////////////////////
  4. // BasicDevice.hxx - Device base class
  5. //
  6. // This is the abstract base class for all derived devices
  7. //
  8. //
  9. // BSVC "A Microprocessor Simulation Framework"
  10. // Copyright (c) 1993
  11. // By: Bradford W. Mott
  12. // July 26,1993
  13. //
  14. ///////////////////////////////////////////////////////////////////////////////
  15. // $Log: BasicDevice.hxx,v $
  16. // Revision 1.1  1994/02/18  19:48:13  bmott
  17. // Initial revision
  18. //
  19. ///////////////////////////////////////////////////////////////////////////////
  20.  
  21. #ifndef BASICDEVICE_HXX
  22. #define BASICDEVICE_HXX
  23.  
  24. #include "String.h"
  25. #include "Event.hxx"
  26. #include "BasicCPU.hxx"
  27.  
  28. #define AUTOVECTOR_INTERRUPT  -1
  29. #define SPURIOUS_INTERRUPT    -2
  30.  
  31. class BasicCPU;
  32.  
  33. ///////////////////////////////////////////////////////////////////////////////
  34. // BasicDevice class declaration
  35. ///////////////////////////////////////////////////////////////////////////////
  36. class BasicDevice : public EventBase {
  37.   protected:
  38.     BasicCPU*   cpu;                     // CPU that owns the device
  39.     const char* name;                    // Name of the device
  40.     String      initilization_arguments; // Args used to setup device
  41.     String      error_message;           // Startup error message
  42.     int         interrupt_pending;       // Interrupt pending flag
  43.  
  44.   public:
  45.     BasicDevice(const char* n, char* args, BasicCPU* c)
  46.         : EventBase(&c->events),
  47.           name(n),
  48.           initilization_arguments(args),
  49.           cpu(c),
  50.           interrupt_pending(0)
  51.     {};
  52.  
  53.     virtual ~BasicDevice()
  54.     {};
  55.  
  56.     // Set the device's startup error message
  57.     void SetErrorMessage(const char *message)
  58.     { error_message=message; }
  59.  
  60.     // Get the device's startup error message
  61.     String GetErrorMessage()
  62.     { return(error_message); }
  63.  
  64.     // Return the name of the device
  65.     inline const char* Name()
  66.     { return(name); }
  67.  
  68.     // Return the device's CPU
  69.     inline BasicCPU* CPU()
  70.     { return(cpu); }
  71.  
  72.     // Return the initialization arguments
  73.     inline String InitializationArguments()
  74.     { return (initilization_arguments); }
  75.  
  76.     // Tells if the address maps into the device (1=Yes,0=No)
  77.     virtual char CheckMapped(unsigned long)=0;
  78.  
  79.     // Return the lowest address used by the device
  80.     virtual unsigned long LowestAddress()=0;
  81.  
  82.     // Return the highest address used by the device
  83.     virtual unsigned long HighestAddress()=0;
  84.  
  85.     // Get a byte from the device
  86.     virtual unsigned char Peek(unsigned long)=0;
  87.  
  88.     // Put a byte into the device
  89.     virtual void Poke(unsigned long,unsigned char)=0;
  90.  
  91.     // Reset the device
  92.     virtual void Reset();
  93.  
  94.     // This routine sends an interrupt request (IRQ) to the CPU
  95.     virtual void InterruptRequest(int level);
  96.        
  97.     // This routine is called by the CPU when it processes the interrupt
  98.     virtual long InterruptAcknowledge(int level);
  99. };
  100. #endif
  101.